Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2020-CIKM-[VAE-PU]Deep Generative Positive-Unlabeled Learning under Selection Bias

https://dl.acm.org/doi/10.1145/3340531.3411971

Introduction

生成モデルを用いて、本来Nっぽいデータを生成して、それで学習するというのがある。他にもいろいろな先行研究があるが、みんなPはU分布から一様に選ばれるSelected Completely At Random仮説に立っている。

これについて、SAR仮定でも成り立つような手法を開発した。まずはSAR状況下のRisk functionを定義し、VAEを使って新しいRisk Functionでサンプルを生成し、それをうまく学習に使用するようにした。

Preliminary

  • データはxRD\mathbf{x} \in \mathbb{R}^D
  • ラベルはGround-TruthがPならばy=+1y=+1、Nならばy=1y=-1である。
  • ラベルがついてるデータはs=+1s=+1、それ以外はs=0s=0である。
  • Class Priorはπ=Pr(y=+1)\pi = Pr(y=+1)
  • 予測器はlogitを出力する。
  • SCARでは、以下のような式を最小化する(Deep Neural Networkの都合上Objectiveが変わることがある)
RuPU(g)=πE+[l(g(x),+1)]πE+[l(g(x),1)]+EX[l(g(x),1)]R_{uPU}(g) = \pi \mathbb{E}_+[l(g(\mathbf{x}), +1)] - \pi \mathbb{E}_+[l(g(\mathbf{x}), -1)] + \mathbb{E}_X[l(g(\mathbf{x}), -1)]
  • SARでは、以上の式をそのまま使うことができない。以下のような研究で、Propensity Scores(x)=Pr(s=+1x,y=+1)s(\mathbf{x}) = Pr(s=+1|\mathbf{x}, y=+1)を用いて修正している。

📄Arrow icon of a page link2019-ECML PKDD-[PWE]Beyond the Selected Completely At Random Assumption for Learning from Positive and Unlabeled Data

提案手法

目標はバイアスを是正したうえでPU Learningをしたい。そのためには、Pっぽいが与えられたPの中にはないデータを生成すると考えた。

SARでも動作するアルゴリズムにするためには、ラベル付けかどうかと、Uに現れるかどうかは別々の潜在変数によって決まるという風に考える

このため、潜在変数がどのようなふるまいをするかを定めないといけない。これはVAEで学習し生成していく

SARにおけるRisk Function

以下のようになる。pplp_{pl}はラベル付けされたPの分布p(xy=1,s=1)p(\mathbf{x}|y=1,s=1)で、pulp_{ul}はラベル付けされていないPの分布p(xy=1,s=0)p(\mathbf{x}|y=1,s=0)

Image in a image block

nnPUで、max(0, ・)でclipするならば、これは以下のように、2項目の一部と三項目をclipする。

Image in a image block

Variational PU Learning

VAE-PUは以下のようなGraphical ModelのVAEを使う。

Image in a image block

ここで、ooは記述してる部分のssであり、定数として枠外にあるのを定めるかたち。白枠の丸は潜在変数で、黒丸が実際に与えられるデータ。実線は生成する際の依存関係であり、点線は変分近似の関係である。hyh_yはGround-Truthの潜在変数、hoh_oはラベルがつくかどうかの潜在変数。ccはPositiveからデータを抽出してるかNegativeからデータを抽出してるかを定めるもの

変分近似やVAEとは

事後分布p(zx)p(z|x)の推定が難しいとき、これを別の分布p(z)p(z)で近似する。これは普通である。

与えられたデータから得られる変換した潜在変数の集合から平均や分散を得られるが、これらのパラメタをもとにどの分布がよいかを選択することがKL-Divergenceなどを最小化できるかを考えるのが、変分近似である。

VAEでは、まず入力xxを潜在変数zzにmappingする。この時、入力データ群から潜在変数zzの属するデータの平均や分散がわかる。その平均や分散をガウス分布(ガウス分布に従うと人間がおいてるので、通常の変分近似のように何かあるわけではない)に代入する

この上の図では、何をもってして潜在変数の推定に使っているかを示している。

ネットワークの構造は以下の通り。白い部分が

Image in a image block
  • 左側が与えられたPデータから、ラベルがつくかどうかの変数oo(今までの説明ではss)と、そのインスタンスのx\mathbf{x}がわかる。それを先ほどのGraphical Modelに従い隠れ変数を生成しそれをVAEを訓練する。(Decoderで得るx~(pl)\tilde{x}^{(pl)}ができるだけ与えたx(pl)x^{(pl)}と同じになるようにしたいっていうAutoEncoderの訓練)。
  • 真ん中はVAEでPを生成している。(のちのち、それが
  • 右側は与えられたUについて、左側と同じようになる。
  • 真ん中で得たものは生成したおの、右側で得たものは与えられたUとして、Discriminatorを訓練する。
  • これはGANと似ているが、GANはランダムなノイズからDecoderで復元するのに対して、VAEはガウス分布からサンプリングしてDecoderで復元している。

学習の損失関数は以下のようになる。

minGmaxD(LELBO+αLadv+βLlabel)\min_G \max_D (-L_{ELBO} + \alpha L_{adv} + \beta L_{label})
  • GANらしく、GGはDiscriminator以外のネットワーク全体のパラメタで、DDはDiscriminatorのパラメタ。
  • 交互に最小化や最大化を行う。

Generative Process and Variational Inference

具体的には以下のように設定している。

Image in a image block

Graphical Modelから、潜在変数c,hy,hoc, h_y, h_oの分布は、以下のように得られる。

Image in a image block
Image in a image block

目的関数は、変分推論なのでELBOの最小化をする。ELBOは以下の式であり、Encoderはq(zx)q(z|x)、Decoderはq(xz)q(x|z)にあたる。

ELBO=Eq(zx)[logp(x,z)logq(zx)]=Eq(zx)[logp(xz)]+Eq(zx)[logp(z)logq(zx)]ELBO = \mathbb{E}_{q(z|x)} [\log p(x,z) - \log q(z|x)] \\ = \mathbb{E}_{q(z|x)} [\log p(x|z)] + \mathbb{E}_{q(z|x)} [\log p(z) - \log q(z|x)]

📄Arrow icon of a page linkELBOとEM Algorithmについて

これを現在の状況にあてはめると、以下のようになる。

Image in a image block
  • 潜在変数の積分はhy,hoh_y, h_oの2つとccの総和の1つ。
  • ELBO=Eq(zx)[logp(x,z)logq(zx)]ELBO = \mathbb{E}_{q(z|x)} [\log p(x,z) - \log q(z|x)]のfirst termにあたるのは、上記のGraphical Modelから導かれた以下の同時分布。
    Image in a image block
  • ELBO=Eq(zx)[logp(x,z)logq(zx)]ELBO = \mathbb{E}_{q(z|x)} [\log p(x,z) - \log q(z|x)]のsecond termは、変分推論した分布qqにまつわる、潜在変数3つの項。

このELBOについて、最大化していく。

実際、最大化しているとき、以下のようになる。

Image in a image block

Adversarial Generation Loss

敵対的なDiscriminatorもあるので、以下のようにDiscriminatorによる損失も計算できる。この損失は単純にbinary cross entropyである。

ここがGANとの違いとして、VAEとDiscriminatorを同時に訓練している。GANは交互に訓練する。

Image in a image block

生成したPのLoss

最後に、生成したPについて、Pと判断するべきという損失である。

EgenerateP[l(g(x))]\mathbb{E}_{generateP}[l(g(\mathbf{x}))]

生成部分の全体の損失

損失は全体では、ELBO、Disriminatorのもの、生成したPのLossの3つである。

Image in a image block

ELBO以外は明確に経験的に得ることはできる。ELBOを経験的に解くには、ランダムに数個サンプリングしてから、EncoderやDecoderの出力をもとに、経験的に条件付確率の定義から推定するしかない。

全体の流れ

アルゴリズムとしては以下の流れである。

  • VAEベースの生成器を訓練する。
    • ミニバッチで、Xp,XuX_p, X_uが与えられる。
    • 生成器で、本来存在するべきだったといわれているPデータ(バイアスがあって与えられたPの中にはなかった)を一定数生成する。
    • 生成器のほうのlossを計算しアップデート
  • 本命のPU Learningをおkなう。
    • ミニバッチでXp,XuX_p, X_uを得る。生成器からXpgeneratedX_{p-generated}を得る。
    • 前述した、次のBiasを考慮したPUの式で学習させる。
Image in a image block